package cn.rxls.community.util;
;
import cn.rxls.community.contant.JwtConstant;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * jwt工具类
 */
public class JwtUtil {

    /**
     *
     * @param info 令牌数据信息，有效时间，用户id等
     * @return jwt-token令牌
     */
    public static String createToken(Map<String,Object> info){
        JWTCreator.Builder builder = JWT.create();
        //添加秘钥，返回生成的token
        return builder.withIssuer(JwtConstant.ISS) //设置发行人
                .withPayload(info) //遍历info集合， 添加其他数据信息
                .withJWTId(UUID.randomUUID().toString()) //jwtID
                .sign(Algorithm.HMAC256(JwtConstant.SECRET_KEY)); //算法，自定义秘钥

    }

    /**
     * @param token 令牌token字符串
     * @return Map集合，包含部分用户信息
     */
    public static Map<String,Object> parseToken(String token){

        try{
            //设置解密的规则
            JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(JwtConstant.SECRET_KEY)).build();
            DecodedJWT verify = jwtVerifier.verify(token); //进行token解密

            return new HashMap<>(verify.getClaims());//返回解密的信息
        }catch (Exception e){
            return null;
        }
    }
}
